The continual and rapid development of computers, computer software, and related technology has revealed many problems with the typical distribution channels for computer software. For example, computer software, the coded instructions that control a computer's operation, are constantly and incrementally being upgraded and improved. The computer hardware and operating system environment on which the computer software is used is continually being changed, which requires additional changes in the computer software (e.g., new device drivers, new operating system calls, etc.).
A computer software developer will typically release an initial version of a software product. Thereafter, as new and improved computers and peripherals are developed, the software product will commonly be upgraded so as to take full advantage of the increased capabilities of the improved hardware. In addition, a software developer, to remain competitive, will often upgrade the software product to provide new features and functionality.
With the ever-increasing pace of advancement in computer related technologies, software developers compete to be the first to offer a new feature or upgrade. As a result, sometimes software products are made available to the public with unknown errors or defects. Similarly, software products that work as intended on a particular computer with a particular configuration may fail when installed on a different computer having a different configuration (e.g., different hardware, peripherals, operating systems, etc.). Software developers frequently provide fixes for their software products to correct defects that were undetected or unanticipated at the time the software product was released. Fixes are also provided to allow the software product to function correctly on a new computer or with a different operating system environment.
It is often difficult for software developers to make upgrades and fixes available to users. This difficulty not only deprives the user of access to the most reliable and up-to-date software products, it can result in lost sales to the software developer and can damage the goodwill and the development of a long term relationship with a customer by releasing a flawed or deficient software product.
Commonly, mass distribution of commercial software products is accomplished by copying the software product onto storage media (e.g., CD-ROMs, floppy disks, magnetic tapes, etc.). To take advantage of economies of scale, typically a large number of copies of the software product are made during the manufacture of a particular software product. Then, the storage media containing the software product is provided to distributors and retailers for sale to users. Given the rapid pace of software development, however, this manner of distribution is frequently insufficient. For example, it is not uncommon that defects are detected and fixes created shortly after a software product is introduced to the public. But the software products that remain in the distribution chain contain the defect without the fix. This situation is frustrating for users who subsequently purchase the software product that is already obsolete (i.e., because of the defects).
Software can also be distributed over a communications network, such as the Internet and the like. In such distribution systems, a user connects to a remote site (e.g., an update server) and then selects and downloads desired software. Such systems allow for rapid updating of software by simply supplying a new, updated version of the software to the user. This updated software distribution scheme requires the user to select, download, and install the new software. The user may also need to obtain updated help files and other help utilities to assist the user in installing the updated software. This process is further complicated when the user wishes to download multiple software updates. Such a situation may arise, for example, when a manufacturer or vendor makes available a wide variety of electronic products that each may employ software that on occasion may be updated. For instance, a single manufacturer or vendor may offer a wide variety of consumer electronics, such as personal computers, personal digital assistants (PDAs), video cameras, digital cameras, MP3 players, and the like. After viewing the available software and selecting the software items that are desired, a user may be confronted with the need to download a relatively large number of software updates or other software products for multiple devices. The process of downloading and installing the new software can quickly become cumbersome and intimidating for a typical computer user when multiple software updates are required.